package edu.hendrix.grambler.grammars;

import static org.junit.Assert.*;
import org.junit.*;

public class CFGTest {
	@Test
	public void test32587() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("g: g sp line | line;\nline: nonterm sp ':' sp rhs sp ';' sp;\nrhs: rhs sp '|' sp elements | elements;\nsp: \"\\s*\";\nspacing: \"\\s+\";\nelements: elements spacing element | element;\nelement: term | nonterm | regex;\nterm: \"'.*?[^\\\\]'\";\nnonterm: \"\\w+\";\nregex: \"\\\".*?[^\\\\]\\\"\";\n");
		assertEquals(false, t.isError());
	}

	@Test
	public void test33049() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("top: package class | class;\npackage: optSpace 'package' space packageName ';' optSpace;\npackageName: packageName '.' name | name;\nname: \"\\w+\";\nclass: 'public class' space name space 'extends ' grammarClass ' {' optSpace constructor optSpace '}' space;\ngrammarClass: 'Grammar' | 'edu.hendrix.grambler.Grammar';\nconstructor: 'public' space name optSpace '() {' optSpace 'super();' optSpace productions optSpace '}';\nproductions: productions space production | production;\nproduction: 'addProduction(' string optSpace rhs ');';\nrhs: rhs alternative | alternative;\nalternative: ',' optSpace 'new String[]{' stringList '}' optSpace;\nstringList: stringList ',' optSpace string | string;\nstring: \"\\\".*?[^\\\\]\\\"\";\nspace: \"\\s+\";\noptSpace: \"\\s*\";");
		assertEquals(false, t.isError());
	}

	@Test
	public void test33981() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("top: package class | class;\npackage: optSpace 'package' space packageName ';' optSpace;\npackageName: packageName '.' name | name;\nname: \"\\w+\";\nclass: 'public class' space name space 'extends ' grammarClass ' {' optSpace constructor optSpace '}' space;\ngrammarClass: 'Grammar' | 'edu.hendrix.grambler.Grammar';\nconstructor: 'public' space name optSpace '() {' optSpace 'super();' optSpace productions optSpace '}';\nproductions: productions space production | production;\nproduction: 'addProduction(' string optSpace rhs ');';\nrhs: rhs alternative | alternative;\nalternative: ',' optSpace 'new String[]{' stringList '}' optSpace;\nstringList: stringList ',' optSpace string | string;\nstring: \"\\\".*?[^\\\\]\\\"\";\nspace: \"\\s+\";\noptSpace: \"\\s*\";");
		assertEquals("g\n\tg\n\t\tg\n\t\t\tg\n\t\t\t\tg\n\t\t\t\t\tg\n\t\t\t\t\t\tg\n\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"top\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"package\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"class\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"class\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"package\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'package'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"space\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"packageName\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"';'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"packageName\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"packageName\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'.'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"name\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"name\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"name\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tregex: \"\\\"\\\\w+\\\"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"class\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'public class'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"space\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"name\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"space\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'extends '\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"grammarClass\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"' {'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"constructor\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'}'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"space\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"grammarClass\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'Grammar'\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'edu.hendrix.grambler.Grammar'\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\tnonterm: \"constructor\"\n\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'public'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"space\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"name\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'() {'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'super();'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"productions\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'}'\"\n\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\tnonterm: \"productions\"\n\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"productions\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"space\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"production\"\n\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"production\"\n\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\tnonterm: \"production\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'addProduction('\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"string\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"rhs\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tterm: \"');'\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\tline\n\t\t\t\t\t\t\tnonterm: \"rhs\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"rhs\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"alternative\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"alternative\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\tline\n\t\t\t\t\t\tnonterm: \"alternative\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\trhs\n\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"','\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'new String[]{'\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"stringList\"\n\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tterm: \"'}'\"\n\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\tsp: \"\"\n\t\t\t\tline\n\t\t\t\t\tnonterm: \"stringList\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t:: \":\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\trhs\n\t\t\t\t\t\trhs\n\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"stringList\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tterm: \"','\"\n\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"optSpace\"\n\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\tnonterm: \"string\"\n\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tnonterm: \"string\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t;: \";\"\n\t\t\t\t\tsp: \"\\n\"\n\t\t\tsp: \"\"\n\t\t\tline\n\t\t\t\tnonterm: \"string\"\n\t\t\t\tsp: \"\"\n\t\t\t\t:: \":\"\n\t\t\t\tsp: \" \"\n\t\t\t\trhs\n\t\t\t\t\telements\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tregex: \"\\\"\\\\\\\".*?[^\\\\\\\\]\\\\\\\"\\\"\"\n\t\t\t\tsp: \"\"\n\t\t\t\t;: \";\"\n\t\t\t\tsp: \"\\n\"\n\t\tsp: \"\"\n\t\tline\n\t\t\tnonterm: \"space\"\n\t\t\tsp: \"\"\n\t\t\t:: \":\"\n\t\t\tsp: \" \"\n\t\t\trhs\n\t\t\t\telements\n\t\t\t\t\telement\n\t\t\t\t\t\tregex: \"\\\"\\\\s+\\\"\"\n\t\t\tsp: \"\"\n\t\t\t;: \";\"\n\t\t\tsp: \"\\n\"\n\tsp: \"\"\n\tline\n\t\tnonterm: \"optSpace\"\n\t\tsp: \"\"\n\t\t:: \":\"\n\t\tsp: \" \"\n\t\trhs\n\t\t\telements\n\t\t\t\telement\n\t\t\t\t\tregex: \"\\\"\\\\s*\\\"\"\n\t\tsp: \"\"\n\t\t;: \";\"\n\t\tsp: \"\"\n", t.toTextTree());
	}

	@Test
	public void test50727() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("g: g sp line | line;\nline: nonterm sp ':' sp rhs sp ';' sp;\nrhs: rhs sp '|' sp elements | elements;\nsp: \"\\s*\";\nspacing: \"\\s+\";\nelements: elements spacing element | element;\nelement: term | nonterm | regex;\nterm: \"'.*?[^\\\\]'\";\nnonterm: \"\\w+\";\nregex: \"\\\".*?[^\\\\]\\\"\";\n");
		assertEquals("g\n\tg\n\t\tg\n\t\t\tg\n\t\t\t\tg\n\t\t\t\t\tg\n\t\t\t\t\t\tg\n\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\tg\n\t\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"g\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"g\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"line\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"line\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\t\tnonterm: \"line\"\n\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"nonterm\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"':'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"rhs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"';'\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\t\tnonterm: \"rhs\"\n\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"rhs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tterm: \"'|'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"elements\"\n\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"elements\"\n\t\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tregex: \"\\\"\\\\s*\\\"\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\tline\n\t\t\t\t\t\t\tnonterm: \"spacing\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tregex: \"\\\"\\\\s+\\\"\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\tline\n\t\t\t\t\t\tnonterm: \"elements\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\trhs\n\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"elements\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"spacing\"\n\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"element\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\tnonterm: \"element\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\tsp: \"\"\n\t\t\t\tline\n\t\t\t\t\tnonterm: \"element\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t:: \":\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\trhs\n\t\t\t\t\t\trhs\n\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"term\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\tnonterm: \"nonterm\"\n\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tnonterm: \"regex\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t;: \";\"\n\t\t\t\t\tsp: \"\\n\"\n\t\t\tsp: \"\"\n\t\t\tline\n\t\t\t\tnonterm: \"term\"\n\t\t\t\tsp: \"\"\n\t\t\t\t:: \":\"\n\t\t\t\tsp: \" \"\n\t\t\t\trhs\n\t\t\t\t\telements\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tregex: \"\\\"'.*?[^\\\\\\\\]'\\\"\"\n\t\t\t\tsp: \"\"\n\t\t\t\t;: \";\"\n\t\t\t\tsp: \"\\n\"\n\t\tsp: \"\"\n\t\tline\n\t\t\tnonterm: \"nonterm\"\n\t\t\tsp: \"\"\n\t\t\t:: \":\"\n\t\t\tsp: \" \"\n\t\t\trhs\n\t\t\t\telements\n\t\t\t\t\telement\n\t\t\t\t\t\tregex: \"\\\"\\\\w+\\\"\"\n\t\t\tsp: \"\"\n\t\t\t;: \";\"\n\t\t\tsp: \"\\n\"\n\tsp: \"\"\n\tline\n\t\tnonterm: \"regex\"\n\t\tsp: \"\"\n\t\t:: \":\"\n\t\tsp: \" \"\n\t\trhs\n\t\t\telements\n\t\t\t\telement\n\t\t\t\t\tregex: \"\\\"\\\\\\\".*?[^\\\\\\\\]\\\\\\\"\\\"\"\n\t\tsp: \"\"\n\t\t;: \";\"\n\t\tsp: \"\\n\"\n", t.toTextTree());
	}

	@Test
	public void test58127() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("sum: number '+' number; \nnumber: '0' | '1';");
		assertEquals(false, t.isError());
	}

	@Test
	public void test58337() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("sum: number '+' number; \nnumber: '0' | '1';");
		assertEquals("g\n\tg\n\t\tline\n\t\t\tnonterm: \"sum\"\n\t\t\tsp: \"\"\n\t\t\t:: \":\"\n\t\t\tsp: \" \"\n\t\t\trhs\n\t\t\t\telements\n\t\t\t\t\telements\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tnonterm: \"number\"\n\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tterm: \"'+'\"\n\t\t\t\t\tspacing: \" \"\n\t\t\t\t\telement\n\t\t\t\t\t\tnonterm: \"number\"\n\t\t\tsp: \"\"\n\t\t\t;: \";\"\n\t\t\tsp: \" \\n\"\n\tsp: \"\"\n\tline\n\t\tnonterm: \"number\"\n\t\tsp: \"\"\n\t\t:: \":\"\n\t\tsp: \" \"\n\t\trhs\n\t\t\trhs\n\t\t\t\telements\n\t\t\t\t\telement\n\t\t\t\t\t\tterm: \"'0'\"\n\t\t\tsp: \" \"\n\t\t\t|: \"|\"\n\t\t\tsp: \" \"\n\t\t\telements\n\t\t\t\telement\n\t\t\t\t\tterm: \"'1'\"\n\t\tsp: \"\"\n\t\t;: \";\"\n\t\tsp: \"\"\n", t.toTextTree());
	}

	@Test
	public void test34125() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("sum: number '+' number; \nnumber: \"\\d+\";");
		assertEquals(false, t.isError());
	}

	@Test
	public void test34334() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("sum: number '+' number; \nnumber: \"\\d+\";");
		assertEquals("g\n\tg\n\t\tline\n\t\t\tnonterm: \"sum\"\n\t\t\tsp: \"\"\n\t\t\t:: \":\"\n\t\t\tsp: \" \"\n\t\t\trhs\n\t\t\t\telements\n\t\t\t\t\telements\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tnonterm: \"number\"\n\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tterm: \"'+'\"\n\t\t\t\t\tspacing: \" \"\n\t\t\t\t\telement\n\t\t\t\t\t\tnonterm: \"number\"\n\t\t\tsp: \"\"\n\t\t\t;: \";\"\n\t\t\tsp: \" \\n\"\n\tsp: \"\"\n\tline\n\t\tnonterm: \"number\"\n\t\tsp: \"\"\n\t\t:: \":\"\n\t\tsp: \" \"\n\t\trhs\n\t\t\telements\n\t\t\t\telement\n\t\t\t\t\tregex: \"\\\"\\\\d+\\\"\"\n\t\tsp: \"\"\n\t\t;: \";\"\n\t\tsp: \"\"\n", t.toTextTree());
	}

	@Test
	public void test34330() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("sum: sum sp op sp number; \nsp: \"\\s*\"; \nop: '+'; \nnumber: \"\\d+\";");
		assertEquals(false, t.isError());
	}

	@Test
	public void test34568() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("sum: sum sp op sp number; \nsp: \"\\s*\"; \nop: '+'; \nnumber: \"\\d+\";");
		assertEquals("g\n\tg\n\t\tg\n\t\t\tg\n\t\t\t\tline\n\t\t\t\t\tnonterm: \"sum\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t:: \":\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\trhs\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sum\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"op\"\n\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tnonterm: \"number\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t;: \";\"\n\t\t\t\t\tsp: \" \\n\"\n\t\t\tsp: \"\"\n\t\t\tline\n\t\t\t\tnonterm: \"sp\"\n\t\t\t\tsp: \"\"\n\t\t\t\t:: \":\"\n\t\t\t\tsp: \" \"\n\t\t\t\trhs\n\t\t\t\t\telements\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tregex: \"\\\"\\\\s*\\\"\"\n\t\t\t\tsp: \"\"\n\t\t\t\t;: \";\"\n\t\t\t\tsp: \" \\n\"\n\t\tsp: \"\"\n\t\tline\n\t\t\tnonterm: \"op\"\n\t\t\tsp: \"\"\n\t\t\t:: \":\"\n\t\t\tsp: \" \"\n\t\t\trhs\n\t\t\t\telements\n\t\t\t\t\telement\n\t\t\t\t\t\tterm: \"'+'\"\n\t\t\tsp: \"\"\n\t\t\t;: \";\"\n\t\t\tsp: \" \\n\"\n\tsp: \"\"\n\tline\n\t\tnonterm: \"number\"\n\t\tsp: \"\"\n\t\t:: \":\"\n\t\tsp: \" \"\n\t\trhs\n\t\t\telements\n\t\t\t\telement\n\t\t\t\t\tregex: \"\\\"\\\\d+\\\"\"\n\t\tsp: \"\"\n\t\t;: \";\"\n\t\tsp: \"\"\n", t.toTextTree());
	}

	@Test
	public void test34556() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("expr: sum sp;\nsum: sum sp addOp sp product | product;\nproduct: product sp mulOp sp number | number;\nsp: \"\\s*\";\nmulOp: '*' | '/';\naddOp: '+' | '-';\nnumber: \"\\d+\";");
		assertEquals(false, t.isError());
	}

	@Test
	public void test34895() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("expr: sum sp;\nsum: sum sp addOp sp product | product;\nproduct: product sp mulOp sp number | number;\nsp: \"\\s*\";\nmulOp: '*' | '/';\naddOp: '+' | '-';\nnumber: \"\\d+\";");
		assertEquals("g\n\tg\n\t\tg\n\t\t\tg\n\t\t\t\tg\n\t\t\t\t\tg\n\t\t\t\t\t\tg\n\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\tnonterm: \"expr\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sum\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\tline\n\t\t\t\t\t\t\tnonterm: \"sum\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sum\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"addOp\"\n\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"product\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"product\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\tline\n\t\t\t\t\t\tnonterm: \"product\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\trhs\n\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"product\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"mulOp\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"number\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\tnonterm: \"number\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\tsp: \"\"\n\t\t\t\tline\n\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t:: \":\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\trhs\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tregex: \"\\\"\\\\s*\\\"\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t;: \";\"\n\t\t\t\t\tsp: \"\\n\"\n\t\t\tsp: \"\"\n\t\t\tline\n\t\t\t\tnonterm: \"mulOp\"\n\t\t\t\tsp: \"\"\n\t\t\t\t:: \":\"\n\t\t\t\tsp: \" \"\n\t\t\t\trhs\n\t\t\t\t\trhs\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tterm: \"'*'\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\t|: \"|\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\telements\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tterm: \"'/'\"\n\t\t\t\tsp: \"\"\n\t\t\t\t;: \";\"\n\t\t\t\tsp: \"\\n\"\n\t\tsp: \"\"\n\t\tline\n\t\t\tnonterm: \"addOp\"\n\t\t\tsp: \"\"\n\t\t\t:: \":\"\n\t\t\tsp: \" \"\n\t\t\trhs\n\t\t\t\trhs\n\t\t\t\t\telements\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tterm: \"'+'\"\n\t\t\t\tsp: \" \"\n\t\t\t\t|: \"|\"\n\t\t\t\tsp: \" \"\n\t\t\t\telements\n\t\t\t\t\telement\n\t\t\t\t\t\tterm: \"'-'\"\n\t\t\tsp: \"\"\n\t\t\t;: \";\"\n\t\t\tsp: \"\\n\"\n\tsp: \"\"\n\tline\n\t\tnonterm: \"number\"\n\t\tsp: \"\"\n\t\t:: \":\"\n\t\tsp: \" \"\n\t\trhs\n\t\t\telements\n\t\t\t\telement\n\t\t\t\t\tregex: \"\\\"\\\\d+\\\"\"\n\t\tsp: \"\"\n\t\t;: \";\"\n\t\tsp: \"\"\n", t.toTextTree());
	}

	@Test
	public void test34877() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("expr: sum sp;\nsum: sum sp addOp sp product | product;\nproduct: product sp mulOp sp number | number;\nsp: \"\\s*\";\nmulOp: '*' | '/';\naddOp: '+' | '-';\nnumber: \"\\d+\";");
		assertEquals(false, t.isError());
	}

	@Test
	public void test35216() {
		edu.hendrix.grambler.Grammar g = new CFG();
		edu.hendrix.grambler.Tree t = g.parse2("expr: sum sp;\nsum: sum sp addOp sp product | product;\nproduct: product sp mulOp sp number | number;\nsp: \"\\s*\";\nmulOp: '*' | '/';\naddOp: '+' | '-';\nnumber: \"\\d+\";");
		assertEquals("g\n\tg\n\t\tg\n\t\t\tg\n\t\t\t\tg\n\t\t\t\t\tg\n\t\t\t\t\t\tg\n\t\t\t\t\t\t\tline\n\t\t\t\t\t\t\t\tnonterm: \"expr\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sum\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\tline\n\t\t\t\t\t\t\tnonterm: \"sum\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sum\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"addOp\"\n\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"product\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"product\"\n\t\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\tline\n\t\t\t\t\t\tnonterm: \"product\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t:: \":\"\n\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\trhs\n\t\t\t\t\t\t\trhs\n\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"product\"\n\t\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\t\tnonterm: \"mulOp\"\n\t\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\t\t\t\t\tspacing: \" \"\n\t\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\t\tnonterm: \"number\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\t|: \"|\"\n\t\t\t\t\t\t\tsp: \" \"\n\t\t\t\t\t\t\telements\n\t\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\t\tnonterm: \"number\"\n\t\t\t\t\t\tsp: \"\"\n\t\t\t\t\t\t;: \";\"\n\t\t\t\t\t\tsp: \"\\n\"\n\t\t\t\tsp: \"\"\n\t\t\t\tline\n\t\t\t\t\tnonterm: \"sp\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t:: \":\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\trhs\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tregex: \"\\\"\\\\s*\\\"\"\n\t\t\t\t\tsp: \"\"\n\t\t\t\t\t;: \";\"\n\t\t\t\t\tsp: \"\\n\"\n\t\t\tsp: \"\"\n\t\t\tline\n\t\t\t\tnonterm: \"mulOp\"\n\t\t\t\tsp: \"\"\n\t\t\t\t:: \":\"\n\t\t\t\tsp: \" \"\n\t\t\t\trhs\n\t\t\t\t\trhs\n\t\t\t\t\t\telements\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t\t\tterm: \"'*'\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\t|: \"|\"\n\t\t\t\t\tsp: \" \"\n\t\t\t\t\telements\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tterm: \"'/'\"\n\t\t\t\tsp: \"\"\n\t\t\t\t;: \";\"\n\t\t\t\tsp: \"\\n\"\n\t\tsp: \"\"\n\t\tline\n\t\t\tnonterm: \"addOp\"\n\t\t\tsp: \"\"\n\t\t\t:: \":\"\n\t\t\tsp: \" \"\n\t\t\trhs\n\t\t\t\trhs\n\t\t\t\t\telements\n\t\t\t\t\t\telement\n\t\t\t\t\t\t\tterm: \"'+'\"\n\t\t\t\tsp: \" \"\n\t\t\t\t|: \"|\"\n\t\t\t\tsp: \" \"\n\t\t\t\telements\n\t\t\t\t\telement\n\t\t\t\t\t\tterm: \"'-'\"\n\t\t\tsp: \"\"\n\t\t\t;: \";\"\n\t\t\tsp: \"\\n\"\n\tsp: \"\"\n\tline\n\t\tnonterm: \"number\"\n\t\tsp: \"\"\n\t\t:: \":\"\n\t\tsp: \" \"\n\t\trhs\n\t\t\telements\n\t\t\t\telement\n\t\t\t\t\tregex: \"\\\"\\\\d+\\\"\"\n\t\tsp: \"\"\n\t\t;: \";\"\n\t\tsp: \"\"\n", t.toTextTree());
	}

}

